草庐IT

Java Swingworker 和多线程

全部标签

android - SensorEvent onChanged 多线程?

我正在检测设备的方向以检查它是否倒置在表面上,然后调用方法。我遇到的问题是,用户可能会无意中将设备的方向瞬间转向该位置并返回正面朝上的位置以纠正他们的错误,但是该方法在他们第一次这样做时仍会被调用。我正在尝试在800毫秒的延迟上向方向添加“双重检查”,以便用户有时间在触发该方法之前更正方向。不幸的是,我无法控制调用onSensorChanged的频率,以便添加一个具有800毫秒延迟的线程,这将仔细检查方向以防止无意的方向更改。我的代码如下,publicSensorEventListeneraccelerometerListener=newSensorEventListener(){@O

java - JNI GetMethodID 在 native 线程中导致错误

在android中,我使用pthread_create创建一个本地线程,然后在回调过程中,调用FindClass来获取一个Java类。但它不起作用。我从androidjnitips得到提示我在FindClassfromanythreadinAndroidJNI中找到了解决方案我像这样为我的项目修改它[编辑]JavaVM*gJvm=nullptr;staticjobjectgClassLoader;staticjmethodIDgFindClassMethod;JNIEXPORTjintJNICALLJNI_OnLoad(JavaVM*pjvm,void*reserved){gJvm=p

android - 利用 openGL 的多线程

在基于openGL渲染器的游戏环境中交谈:假设有两个线程:更新游戏对象的游戏逻辑和物理等根据游戏对象中的数据对每个游戏对象进行openGL绘制调用(线程1不断更新)除非您在游戏的当前状态下有每个游戏对象的两个拷贝,否则您必须暂停线程1,而线程2进行绘制调用,否则游戏对象将在绘制调用的中间更新目的!这是不可取的!但是停止线程1以安全地从线程2进行绘制调用会破坏多线程/并发的全部目的除了使用数百或数千或同步对象/栅栏之外,是否有更好的方法来利用多核架构来提高性能?我知道我仍然可以使用多线程加载纹理和编译着色器用于尚未成为当前游戏状态一部分的对象但是我如何为Activity/可见对象执行此操

android - CountDownTimer: "Can' t 在尚未调用 Looper.prepare() 的线程内创建处理程序”

我知道之前有人问过“无法在没有调用Looper.prepare()的线程内创建处理程序”的一般问题,但我很难理解它在这种情况下的应用方式。我正在尝试在非UI线程中构造一个新的CountDownTimer,我猜这是导致此错误的原因,但我不太明白为什么需要在主线程中使用计时器。据我所知,它似乎有一个回调处理程序,需要在具有循环程序的线程中运行,而非UI线程默认情况下没有循环程序。看来我的选择是:1)让这个非UI线程有一个Looper或2)在我的UI线程上创建一些可以构造这个计时器的奇怪方法,这两种方法对我来说都很愚蠢。有人可以帮我理解其中的含义吗?此外,有人知道任何有用的链接可以阐明Loo

android - 服务中的线程,还是线程中的服务?

我有一个关于服务的问题:在服务中创建线程或在线程中创建服务哪个更好?问题来了,因为我正在为我的应用程序实现一个错误报告器,所以当应用程序失败时,它会向我发送一份报告,说明发生了什么。我的想法是在发生错误时发出通知,从这里显示ActivityActivity并创建一个线程来重试传递,直到它成功或达到最小尝试次数。重新提出问题,系统如何最不可能删除我的进程(如果内存不足):在服务中使用线程,还是在线程中使用服务?我认为最好的是第一选择,但是我在同样的android人中看到了一段代码,在这里:(第640行)codefromgoogletokeepaliveathread??他们在哪里使用第二

java - 在 Android 中授予线程低优先级

如果我想授予线程低优先级,正确的调用是什么?Threadt=newThread(r);t.setPriority(Thread.MIN_PRIORITY);或Process.setThreadPriority(Process.THREAD_PRIORITY_LOWEST);或者我应该把两者结合起来?如果是,这个调用的顺序重要吗?谢谢 最佳答案 t.setPriority(int)将设置Threadt的优先级。这不能用于将线程的优先级设置为高于接收方的ThreadGroup。Process.setThreadPriority(int,

Lock、Monitor线程锁

Lock、Monitor线程锁官网使用https://learn.microsoft.com/zh-cn/dotnet/api/system.threading.monitor?view=net-8.0一.Lock1.1介绍Lock关键字实际上是一个语法糖,它将Monitor对象进行封装,给object加上一个互斥锁,A进程进入此代码段时,会给object对象加上互斥锁,此时其他B进程进入此代码段时检查object对象是否有锁?如果有锁则继续等待A进程运行完该代码段并且解锁object对象之后,B进程才能够获取object对象为其加上锁,访问代码段。lock是Monitor的语法糖1.2示例l

android - 我是否必须删除 Android 中的线程

我从一个线程调用了以下函数:ThreadMove=newThread(){publicvoidrun(){while(ButtonDown){UpdateValues();try{Thread.sleep(50);}catch(InterruptedExceptione){e.printStackTrace();}}}};Move.start();当while循环中断时,Android会删除线程吗?还是我必须以某种方式删除它? 最佳答案 这里有两个概念。一个是线程本身,它在处理器中运行,具有堆栈内存。另一个是Thread对象,它基本

java - 如何再次启动一个完成的线程?

我在线程(A)中运行一些代码。在该线程的末尾,它创建另一个线程(B)。现在我想做的是在线程B的末尾,我需要调用线程A。当我这样做时_threadA.start()来自线程B系统说:Thredalreadstarted.如何解决这个问题? 最佳答案 你必须了解lifecycleofthreads;线程启动后无法重新启动-这同样适用于已停止的线程,一旦停止,其生命周期就结束了。看看链接的文章,特别是状态图会让事情变得清晰。 关于java-如何再次启动一个完成的线程?,我们在StackOver

java - Android - 获取线程 ID - 使用此 SO 方法始终返回 0

我正在尝试获取线程ID。我使用这种方法:HowtogetAndroidThreadID?但推荐的方式总是返回0。这条线做了什么,它应该做什么Thread.currentThread.getID().哪个是正确的? 最佳答案 Thread.currentThread().getId();根据DocumentationReturnsthethread'sidentifier.TheIDisapositivelonggeneratedonthreadcreation,isuniquetothethread,anddoesn'tchange